"use client"; import { getWheelApi } from "@/api/cashWheel"; import { ServiceTypes } from "@/api/customservice"; import { userInfoApi } from "@/api/login"; import { lredPacketApi, redPacketApi } from "@/api/promo"; import { getGiveInfoApi } from "@/api/slots"; import UserRecharge, { ModalRefProps, Timeout } from "@/components/ModalPopup/RechargeModal"; import RedPacketModal, { RedPacketModalProps } from "@/components/ModalPopup/RedPacketModal"; import SignInModal, { SignInModalProps } from "@/components/ModalPopup/SignInModal"; import SlotsModal, { SlotModalRefProps } from "@/components/ModalPopup/SlotsModal"; import WheelModal, { WheelModalProps } from "@/components/ModalPopup/WheelModal"; import { useEventPoint } from "@/hooks/useEventPoint"; import { Link } from "@/i18n/routing"; import { useFirstPayStore } from "@/stores/useFirstPayStore"; import { useGlobalNoticeStore } from "@/stores/useGlobalNoticeStore"; import { useSignStore } from "@/stores/useSignStore"; import useWheelStore from "@/stores/useWheelStore"; import { getToken } from "@/utils/Cookies"; import { useRequest } from "ahooks"; import { Badge } from "antd-mobile"; import { useTranslations } from "next-intl"; import Image from "next/image"; import { FC, useEffect, useRef, useState } from "react"; interface Props { services: ServiceTypes[]; } /** * 免费送活动 */ const SlotSection = () => { const slotsRef = useRef(null); const getSlots = async () => { const token = getToken(); if (token) { const result = await getGiveInfoApi(); return result.data; } else { return Promise.resolve({}); } }; const { data: slots, run: slotRun } = useRequest(getSlots, { pollingInterval: 2000, pollingErrorRetryCount: 1, pollingWhenHidden: false, }); const slotHandler = () => { slotsRef.current?.onOpen(slots); }; return ( <> {slots?.id ? ( ) : null} {/*随机送*/} ); }; /** * 轮盘 */ const WheelSection = ({ onDestory }: any) => { const wheelModalRef = useRef(null); const { wheelStatus, wheelCurrent, setWheel } = useWheelStore((state) => ({ wheelStatus: state.status, wheelCurrent: state.currentWheel, setWheel: state.setWheel, })); useEffect(() => { setWheel().then((data) => { if (data && useWheelStore.getState().status === 1) { wheelModalRef.current?.onOpen(data); } }); }, []); return ( <> {wheelStatus === 2 ? ( {"wheel"} ) : null} {/* 轮盘弹窗 */} ); }; /** * 首充 */ const PaySection = () => { const token = getToken(); const { firstPay, getPayData } = useFirstPayStore((state) => { return { firstPay: state.first_pay, getPayData: state.getPayData, }; }); const userRechargeRef = useRef(null); // 首充活动 // const getPayInfo = async (): Promise => { // if (token) { // const result = await getPaysApi(); // return result.data; // } else { // return Promise.resolve({ // first_pay: [], // pay: [], // }); // } // }; // const getPayInfo = async (): Promise => {}; const { data, run: payRun } = useRequest(getPayData, { pollingErrorRetryCount: 1, pollingWhenHidden: false, }); return ( <> {firstPay.map((item, index) => { return (
{ userRechargeRef.current?.onOpen && userRechargeRef.current?.onOpen(firstPay, index); }} /> {item.count_down > 0 ? ( ) : null}
); })} {/*首充弹窗*/} ); }; /** * 神秘彩金 */ // const JackpotSection = () => { // const token = getToken(); // return
2323
; // }; /** * 红包雨 */ const RedPacketSection = () => { const token = getToken(); const redPacketModalRef = useRef(null); const getRedPacketInfo = async () => { try { let redPacketInfo: any; let actList: any = []; if (token) { redPacketInfo = await lredPacketApi(); actList = redPacketInfo.data?.red_packets || []; } else { redPacketInfo = await redPacketApi(); actList = redPacketInfo.data || []; } // 已经开始 return actList.filter((aItem: any) => { return aItem.is_start; }); } catch (error) {} }; // 红包雨轮询 const { data: packets, run } = useRequest(getRedPacketInfo, { pollingInterval: 5000, pollingErrorRetryCount: 1, pollingWhenHidden: false, }); return ( <> {packets?.map((item, index) => { const icons = JSON.parse(item.icon); const icon = icons[icons.length - 1]; return (
{ redPacketModalRef.current?.onOpen(packets, index); }} />
); })} {/*红包雨弹窗*/} ); }; const MessageSection = () => { const { unread, userUnred } = useGlobalNoticeStore((state) => ({ unread: state.unread, userUnred: state.userUnred, })); return ( <> {unread || userUnred ? ( ) : null} ); }; /** * 客服 */ const CustomerSection: FC> = (props) => { const { services } = props; const defaultService = services?.filter((item) => item.is_suspend === 1); return ( <> {defaultService?.map((item, index) => ( {""} ))} ); }; const getMaxSignId = (obj: any) => { if (!obj) return null; const signArr: number[] = []; Object.keys(obj).map((key) => { if (obj[key] === 9) { signArr.push(Number(key)); } }); return signArr.length > 0 ? Math.max(...signArr) : null; }; /** * 签到活动 */ const SignInSection: FC = () => { const SignInRef = useRef(null); const [activityId, setActivityId] = useState(null); const { getSignData, signData } = useSignStore((state) => { return { getSignData: state.getSignData, signData: state.signData, }; }); const getUserInfo = async () => { const res: any = await userInfoApi(); if (res.code === 200 && res.data?.activity) { const activity_id = getMaxSignId(res.data?.activity); if (activity_id) { setActivityId(activity_id); await getSignData({ activity_id: activity_id }); setTimeout(() => { signInHandle(); }, 1000); } } }; useEffect(() => { getUserInfo(); }, []); const signInHandle = () => { SignInRef.current?.onOpen(); }; if (!activityId) { return null; } return ( <> {/*
Sign
*/} ); }; const ServiceWidget: FC = (props) => { const { services } = props; // const [isShowSign, setIsShowSign] = useState(false); const { eventView } = useEventPoint(); const newServices = services?.filter((item) => item.status === 1) || []; const getWheel = () => { if (!getToken()) return Promise.resolve(undefined); return getWheelApi().then((res) => { return res.data; }); }; useEffect(() => { // 数据存储,侧边栏使用 // setSocials(socials); // pixel 埋点 // eventView(); }, []); const t = useTranslations("HomePage"); // const wheelDestory = () => { // setIsShowSign(true); // }; return ( <>
{/*轮盘 */} {/*首充*/} {/* 红包雨icon */} {/*未读消息*/} {/*客服*/} {/* 签到 */}
= 5 ? 5 : (newServices?.length ?? 1)},1fr)`, }} > {newServices.map((service, index) => { return ( ); })}
{t("Service")}
{/*share*/}
{t("Share")}
{"BCWIN777"} ); }; export default ServiceWidget;